const cloud = require('wx-server-sdk')
const fs = require('fs')
const path = require('path')

// 初始化云开发环境
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })
const db = cloud.database() // 可选：用于记录上传日志

// 云函数入口函数
exports.main = async (event, context) => {
  try {
    // 1. 从请求中获取视频帧数据（Base64格式）
    const { fileContent } = event
    if (!fileContent) {
      return {
        success: false,
        error: '缺少视频帧数据（fileContent）'
      }
    }

    // 2. 将Base64字符串转换为Buffer
    const buffer = Buffer.from(fileContent, 'base64')
    if (buffer.length === 0) {
      return {
        success: false,
        error: 'Base64数据转换失败'
      }
    }

    // 3. 生成唯一文件名（避免重复）
    const timestamp = Date.now() // 时间戳
    const random = Math.floor(Math.random() * 1000) // 随机数
    const fileName = `raspberry_video/${timestamp}_${random}.jpg` // 存储路径（jpg格式，因树莓派上传的是视频帧）

    // 4. 上传到云存储
    const uploadResult = await cloud.uploadFile({
      cloudPath: fileName, // 云存储路径
      fileContent: buffer // 文件内容（Buffer）
    })

    // 5. 可选：记录上传日志到云数据库（便于后续查询）
    await db.collection('video_logs').add({
      data: {
        fileName: fileName,
        fileID: uploadResult.fileID,
        uploadTime: new Date(),
        size: buffer.length // 文件大小（字节）
      }
    })

    // 6. 返回成功结果
    return {
      success: true,
      fileID: uploadResult.fileID, // 云存储文件ID（可用于前端访问）
      fileName: fileName
    }

  } catch (err) {
    // 错误处理
    return {
      success: false,
      error: err.message || '上传失败'
    }
  }
}